Technote 1120

Opening Resource Files Twice Considered Hard?


ñ⁄éü

ñ‚ëËÇÃèäç›

FSpOpenResFile ÇÃìÆçÏÇ…ä÷Ç∑ÇÈè⁄ç◊Ç»ê‡ñæ

âåàï˚ñ@ÇÃÉåÉVÉs

óvñÒ
ëÂïîï™Çà Mac OS ÉvÉçÉOÉâÉ}ÇÕ FSpOpenResFile (džÇÈÇ¢ÇÕDZÇÃÉãÅ[É`ÉìÇÃå√Ç¢ÉoÅ[ÉWÉáÉìÇ≈džÇÈ OpenResFileÅAOpenRFPermÅAÇ®ÇÊÇ— HOpenResFile) ÇåƒÇ—èoÇ∑DZÇΔÇ™ìÔǵǢÇΔÇÕçlǶǃǢNjÇπÇÒÅBǵǩǵÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìǵǃǢÇÈÇΔÇ´Ç…ÅADZÇÍÇÁÇÃåƒÇ—èoǵǙǫÇÃÇÊǧDžìÆçÏÇ∑ÇÈÇ©ÇÕç°Ç‹Ç≈ìKêÿÇ…ÉhÉLÉÖÉÅÉìÉgÇ…ãLèqÇ≥ÇÍǃǢNjÇπÇÒÇ≈ǵÇΩÅB

DZÇà TECHNOTE Ç≈ÇÕÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìǵǃǢÇÈÇΔÇ´Çà FSpOpenResFile ÇÃìÆçÏÇê≥ämÇ…ê‡ñæÇµÅADZÇÃÇΔÇ´Ç…î≠ê∂Ç∑ÇÈñ‚ëËÇâÒîÇ∑ÇÈÇΩÇflÇ…âåàï˚ñ@ÇíÒàƒÇµÇ‹Ç∑ÅB

Resource Manager ÇégópÇ∑ÇÈÇ∑Ç◊ǃÇà Mac OS ÉvÉçÉOÉâÉ}ÇÕÅADZÇà TECHNOTE ÇÃÅuóvñÒÅvÇì«ÇÒÇ≈ÅADZÇÃÇÊǧǻñ‚ëËǙdžÇÈDZÇΔÇê≥ǵÇ≠îFéØÇµÇƒÇ≠ÇæÇ≥Ç¢ÅBÇ‹ÇΩÅAîÒÉAÉvÉäÉPÅ[ÉVÉáÉìÉRÅ[ÉhÇèëǢǃǢÇÈÉvÉçÉOÉâÉ}ÇÕÅADZÇà TECHNOTE ëSëÃÇÇÊÇ≠ì«ÇÒÇ≈ÅAÇ≈Ç´ÇÈÇæÇØå›ä∑ê´Çämï€Ç∑ÇÈÇÊǧDžÉRÅ[ÉhÇãLèqǵǃÇ≠ÇæÇ≥Ç¢ÅB


ñ‚ëËÇÃèäç›

ÅwInside Macintosh: More Macintosh ToolboxÅx(p1-60) Ç…ÇÕÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìǵǃǢÇÈÇΔÇ´Çà FSpOpenResFile ÇÃìÆçÏDžǬǢǃéüÇÃÇÊǧǻê‡ñæÇ™Ç†ÇËÇ‹Ç∑ÅB

FSpOpenResFile Çégǡǃä˘Ç…ÉIÅ[ÉvÉìǵǃǢÇÈÉäÉ\Å[ÉXÉtÉHÅ[ÉNÇÉIÅ[ÉvÉìǵÇÊǧÇΔÇ∑ÇÈÇΔÅAä˘ë∂ÇÃÉAÉNÉZÉXÉpÉXÇ…ëŒÇ∑ÇÈÉpÅ[É~ÉbÉVÉáÉìDžǵÇΩǙǡǃÅAFSpOpenResFile Ç©ÇÁä˘ë∂ÇÃÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ‹ÇΩÇÕêVǵǢÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇÃÇ¢Ç∏ÇÍǩǙï‘Ç≥ÇÍÇ‹Ç∑ÅBÇΩÇΔǶnjÅAǪÇÍà»ëOÇ…èëÇ´çûÇ›ÉAÉNÉZÉXÇégǡǃÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…ì«Ç›çûÇ›êÍópÉAÉNÉZÉXÇÃÉäÉNÉGÉXÉgÇ™ê≥èÌÇ…é¿çsÇ≥ÇÍÇÈÇΔÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕêVǵǢÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™ï‘Ç≥ÇÍÇ‹Ç∑ÅBàÍï˚ÅAìØÇ∂ÉtÉ@ÉCÉãÇëŒè€Ç…èëÇ´çûÇ›ÉAÉNÉZÉXÇÃÉäÉNÉGÉXÉgÇçƒìxé¿çsÇ∑ÇÈÇΔÅAëOÇΔìØÇ∂ÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™ï‘Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃèÍçáÅAFSpOpenResFile ÇÕǪÇÃÉtÉ@ÉCÉãÇåªç›ÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãDžǵNjÇπÇÒÅB

DZÇÃê‡ñæÇÕÇŸÇΔÇÒÇ«ê≥ǵǢÇÃÇ≈Ç∑Ç™ÅAäÆëSÇ…ê≥ǵǢÇΔÇÕǢǶNjÇπÇÒÅBê≥ämÇ»èÛãµÇÕLJǡÇΔï°éGÇ≈Ç∑ÅB

  • ÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìÇ∑ÇÈÇΩÇflÇ…égópÇ∑ÇÈê≥ämÇ»åƒÇ—èoǵ (ǬNjÇËÅAOpenResFileÅAOpenRFPermÅAHOpenResFileÅAÇ®ÇÊÇ— FSpOpenResFile)ÅB
  • åƒÇ—èoǵDžó^ǶÇÁÇÍǃǢÇÈÉpÅ[É~ÉbÉVÉáÉìÅB
  • ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩÅB
  • ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩ (åªç›ÇÃÉvÉçÉZÉXÇ‹ÇΩÇÕï ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃ)ÅB
  • ï ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩ (DZÇÃÉvÉçÉZÉXÇÕÉçÅ[ÉJÉãÉ}ÉVÉìè„Ç‹ÇΩÇÕï ÇÃÉ}ÉVÉìè„DždžÇËÅAÉtÉ@ÉCÉãã§óLÇ…ÇÊÇËÉtÉ@ÉCÉãÇ…ÉAÉNÉZÉXǵǃǢNjÇ∑)ÅB
  • ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩ (ǪÇÍà»ëOÇ…ÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìǵÇΩÇΔÇ´Ç…égópǵÇΩÉpÅ[É~ÉbÉVÉáÉìÇ≈)ÅB
DZÇÍÇÁÇÃï°éGÇ»óvàˆÇ™Ç©ÇÁÇ›çáǧDZÇΔÇ≈ÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇÃÉIÅ[ÉvÉìÇÕçlǶǃǢÇΩÇÊÇËLJêˆç›ìIDžLJǡÇΔï°éGǻLJÇÃÇ…Ç»ÇËÇ‹Ç∑ÅB

ñ‚ëËÇÃä»ó™âª

çKǢǻDZÇΔÇ…ÅAëOèqǵÇΩÇ∑Ç◊ǃÇÃóvàˆÇ™ñ‚ëËÇåªé¿Ç…ï°éGâªÇ∑ÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBéüÇÃê‡ñæÇ…ǵÇΩǙǡǃï™êÕÇä»ó™âªÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • OpenResFileÅAOpenRFPermÅAHOpenResFileÅAÇ®ÇÊÇ— FSpOpenResFile ÇÕÇ∑Ç◊ǃìØÇ∂ÇÊǧDžìÆçÏǵNjÇ∑ÅBDZÇÃDZÇΔÇÕàÍå©ñæÇÁǩǻÇÊǧDžévǶNjÇ∑Ç™ÅADTS ÉGÉìÉWÉjÉAÇΩÇøÇÕDZÇÃDZÇΔÇ™ìñëRÇæÇΔÇÕçlǶǃǢNjÇπÇÒÅBÇΩÇæÇµÅAé¿ç€Ç…ÉeÉXÉgǵÇΩåãâ ÇªÇ§Ç≈džÇÈDZÇΔÇímÇÍÇŒà¿êSÇ≈Ç´ÇÈÇΔévǢNjÇ∑ÅB

íçà”:
OpenResFileÇÕÉpÅ[É~ÉbÉVÉáÉìÇÃÉpÉâÉÅÅ[É^ÇÇΔÇËÇ‹ÇπÇÒÅBOpenResFile ÇåƒÇ—èoÇ∑ÇΔÅAfsCurPerm ÉpÅ[É~ÉbÉVÉáÉìÇéwíËǵÇΩÇ©ÇÃÇÊǧDžìÆçÏǵNjÇ∑ÅB

  • FSpOpenResFile ÇåƒÇ—èoÇ∑ÇΔÅAéüÇÃÇÊǧǻ 3 ǬDžǻÇËÇ‹Ç∑ÅB
    1. ê≥èÌèIóπ -- êVǵǢÉäÉ\Å[ÉXÉ}ÉbÉvÇ™çÏê¨Ç≥ÇÍÅAÉäÉ\Å[ÉXÉ`ÉFÅ[ÉìÇÃÇ¢ÇøÇŒÇÒè„Ç…í«â¡Ç≥ÇÍÇ‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕêVǵǢÉäÉ\Å[ÉXÉ}ÉbÉvÇåªç›ÇÃÉäÉ\Å[ÉXÉ}ÉbÉvDžǵǃÅAǪÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇï‘ǵNjÇ∑ÅB
    2. ïîï™ìIÇ…ê≥èÌèIóπ -- ä˘ë∂ÇÃÉäÉ\Å[ÉXÉ}ÉbÉvÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™ï‘Ç≥ÇÍÇ‹Ç∑ÅBǪÇÃä˘ë∂ÇÃÉ}ÉbÉvÇ™åªç›ÇÃÉäÉ\Å[ÉXÉ}ÉbÉvÇ…Ç»ÇËÇ‹Ç∑ÅB
    3. ÉGÉâÅ[ -- FSpOpenResFile ÇÕ -1 Çï‘ǵÅAÉäÉ\Å[ÉXÉ`ÉFÅ[ÉìÇ…ïœçXÇÕâ¡Ç¶ÇÁÇÍÇ‹ÇπÇÒÅBResError ÇåƒÇ—èoǵǃÅAé¿ç€ÇÃÉGÉâÅ[î‘çÜÇéÊìæÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

íçà”:
ëOèqÇÃÅuïîï™ìIÇ»ê≥èÌèIóπÅvÇÃåãâ ÅACurResFile Ç™ïœçXÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÕÅAÅwInside Macintosh: More Macintosh ToolboxÅxÇ©ÇÁÇÃà¯ópÇÃç≈å„ÇÃï∂ÇΔñµèÇǵNjÇ∑ÅBDZÇà TECHNOTE Ç™ê≥ǵÇ≠ÅAÅwInside MacintoshÅxÇÃê‡ñæÇÕåÎÇËÇ≈Ç∑ÅB

  • Ç∑Ç◊ǃÇÃèÍçáÇ≈ÅAfsWrPerm ÇΔ fsRdWrPerm ÇÃÇ«ÇøÇÁÇéwíËǵǃLJåãâ ÇÕìØÇ∂Ç…Ç»ÇËÇ‹Ç∑ÅB

DZÇÍÇÁÇÃì_ÇëgÇ›çáÇÌÇπÇÈÇΔÅAê≥ämÇ»èÛãµÇÃê‡ñæÇ™Ç©Ç»ÇËóeà’Ç…Ç»ÇËÇ‹Ç∑ÅBécÇ≥ÇÍǃǢÇÈÇÃÇÕÅADZÇÍà»äOÇÃèÍçáÇ≈ÇÃìÆçÏÇê‡ñæÇ∑ÇÈDZÇΔÇ≈Ç∑ÅB

FSpOpenResFile ÇÃìÆçÏÇ…ä÷Ç∑ÇÈè⁄ç◊Ç»ê‡ñæ

éüÇÃàÍóóï\ÇÕÅAÇ≥NjǥNjǻèÍçáÇ… FSpOpenResFile ǙǫÇÃÇÊǧDžìÆçÏÇ∑ÇÈÇ©Çê≥ämÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

ç≈èâÇÃÉIÅ[ÉvÉìÇ≈égópǵÇΩÉpÅ[É~ÉbÉVÉáÉì 2 âÒñ⁄ÇÃÉIÅ[ÉvÉìÇ≈égópÇ∑ÇÈÉpÅ[É~ÉbÉVÉáÉì ìØÇ∂ÉvÉçÉZÉX ìØÇ∂É}ÉVÉì àŸÇ»ÇÈÉ}ÉVÉì
fsCurPerm fsCurPerm ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ÉGÉâÅ[ -54
fsCurPerm fsRdPerm ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ÉGÉâÅ[ -54
fsCurPerm fsWrPerm
fsRdWrPerm
ïîï™ìIÇ…ê≥èÌèIóπ
ì«Ç›èëÇ´â¬î\
ÉGÉâÅ[ -49 ÉGÉâÅ[ -54
fsRdPerm fsCurPerm ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
fsRdPerm fsRdPerm ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
fsRdPerm fsWrPerm
fsRdWrPerm
ïîï™ìIÇ…ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ÉGÉâÅ[ -49 ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
fsWrPerm
fsRdWrPerm
fsCurPerm ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ÉGÉâÅ[ -54
fsWrPerm
fsRdWrPerm
fsRdPerm ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ê≥èÌèIóπ
ì«Ç›çûÇ›êÍóp
ÉGÉâÅ[ -54
fsWrPerm
fsRdWrPerm
fsWrPerm
fsRdWrPerm
ïîï™ìIÇ…ê≥èÌèIóπ
ì«Ç›èëÇ´â¬î\
ÉGÉâÅ[ -49 ÉGÉâÅ[ -54

êÊì™ÇÃóÒÇÕÅAÉtÉ@ÉCÉãÇç≈èâÇ…ÉIÅ[ÉvÉìǵÇΩÇΔÇ´Ç…égópǵÇΩÉpÅ[É~ÉbÉVÉáÉìÇÃílÇé¶ÇµÇƒÇ¢Ç‹Ç∑ÅB2 î‘ñ⁄ÇÃóÒÇÕç°âÒ FSpOpenResFile ÇåƒÇ—èoÇ∑ÇΩÇflÇ…égópÇ∑ÇÈÉpÅ[É~ÉbÉVÉáÉìÇÃílÇé¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

écÇËÇà 3 ǬÇÃóÒÇÕÅAéüÇà 3 ǬÇÃèÍçáǪÇÍǺÇÍÇ≈é¿çsåãâ Ç™Ç«ÇÃÇÊǧDžǻÇÈÇ©Çê‡ñæÇµÇƒÇ¢Ç‹Ç∑ÅB

  • ìØÇ∂ÉvÉçÉZÉX -- ÉtÉ@ÉCÉãÇÕìØÇ∂ÉvÉçÉZÉXÇ…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢNjÇ∑ÅB
  • ìØÇ∂É}ÉVÉì -- ÉtÉ@ÉCÉãÇÕìØÇ∂É}ÉVÉìè„ÇÃï ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢNjÇ∑ÅB
  • àŸÇ»ÇÈÉ}ÉVÉì -- ÉtÉ@ÉCÉãÇÕÅAÉtÉ@ÉCÉãã§óLÇ…ÇÊǡǃê⁄ë±Ç≥ÇÍǃǢÇÈï ÇÃÉ}ÉVÉìè„ÇÃï ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢNjÇ∑ÅB

ǪÇÍǺÇÍÇÃÉZÉãÇ…ÇÕ 2 ǬÇÃçÄñ⁄Ç™é¶Ç≥ÇÍǃǢNjÇ∑ÅBëÊ 1 ÇÃçÄñ⁄ÇÕëOèqǵÇΩåƒÇ—èoǵÇÃåãâ Ç≈Ç∑ÅBëÊ 2 ÇÃçÄñ⁄ÇÕï‘Ç≥ÇÍÇΩÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ…ä÷òAÇ∑ÇÈÉpÅ[É~ÉbÉVÉáÉì (é¿çsåãâ Ç™Åuê≥èÌèIóπÅvÇ‹ÇΩÇÕÅuïîï™ìIÇ…ê≥èÌèIóπÅvÇÃèÍçá) Ç‹ÇΩÇÕï‘Ç≥ÇÍÇΩÉGÉâÅ[ÉRÅ[Éh (é¿çsåãâ Ç™ÅuÉGÉâÅ[ÅvÇÃèÍçá) Ç≈Ç∑ÅB

DZÇÍÇ≈ÇÕǡǴÇËÇÌÇ©ÇÈDZÇΔ

ëOèqÇÃàÍóóï\Ç©ÇÁèdóvÇ»ñ‚ëËǙǢÇ≠ǬǩñæÇÁǩDžǻÇËÇ‹Ç∑ÅB
  • ÉtÉ@ÉCÉãÇ™ìØÇ∂ÉvÉçÉZÉXÇ…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈèÍçáÅAǪÇÃÉtÉ@ÉCÉãÇ…ëŒÇµÇƒèëÇ´çûÇ›ÉpÅ[É~ÉbÉVÉáÉìÇóvãÅÇ∑ÇÈÇΔÅAé¿çsåãâ ÇÕÅuïîï™ìIÇ…ê≥èÌèIóπÅvÇΔï]âøÇ≥ÇÍÇ‹Ç∑ÅBǬNjÇËÅAFSpOpenResFile ÇÕä˘ë∂ÇÃÉäÉ\Å[ÉXÉ}ÉbÉvÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇï‘Ç∑DZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBDZÇÃèÛãµÇ…ëŒÇ∑ÇÈèÄîıÇdžÇÁÇ©Ç∂ÇflçsǡǃǢǻǢÇΔ (ǵǩLJÅAégópå„Ç…ÉäÉ\Å[ÉXÉ}ÉbÉvÇÉNÉçÅ[ÉYǵǃǢÇÈÇΔ) ñ ì|Ç»èÛãµÇ…Ç»ÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅAÉfÉxÉçÉbÉpÇ™äJî≠íÜÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉäÉ\Å[ÉXÉ}ÉbÉvÅAdžÇÈÇ¢ÇÕÉVÉXÉeÉÄÉäÉ\Å[ÉXÉ}ÉbÉvÇåÎǡǃÉNÉçÅ[ÉYǵǃǵNjǧÇΔǢǧÇÃÇÕÇÊÇ≠džÇÈDZÇΔÇ≈Ç∑ÅB
  • óvãÅǵÇΩí ÇËÇÃÉpÅ[É~ÉbÉVÉáÉìÇéÊìæÇ≈ǴǻǢDZÇΔLJdžÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅAàÍóóï\ÇÃÅuìØÇ∂ÉvÉçÉZÉXÅvÇÃóÒÇ≈ÅAÉtÉ@ÉCÉãÇ™ fsRdPerm Çégǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈèÍçáÇ…ÅAfsRdWrPerm ÇégǡǃÉtÉ@ÉCÉãÇçƒìxÉIÅ[ÉvÉìǵÇÊǧÇΔÇ∑ÇÈÇΔÅAï‘Ç≥ÇÍÇÈÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇÕì«Ç›çûÇ›êÍópÇÃÉpÅ[É~ÉbÉVÉáÉìÇéùÇøÇ‹Ç∑ÅBå„èqÇ∑ÇÈÉTÉìÉvÉãÉRÅ[ÉhÇégópÇ∑ÇÈÇΔÅADZÇÃèÛãµÇÉ`ÉFÉbÉNÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
  • ä˘Ç…ÉIÅ[ÉvÉìǵǃǢÇÈÉtÉ@ÉCÉãÇ…ëŒÇµÇƒÅAï ÇÃÉ}ÉVÉìÇ™ fsRdPerm Çégǡǃ fsRdWrPerm ÉpÅ[É~ÉbÉVÉáÉìÇóvãÅÇ∑ÇÈÇΔÅAÉãÅ[É`ÉìÇÕê≥èÌÇ…é¿çsÇ≥ÇÍÇ‹Ç∑Ç™ÅAì«Ç›çûÇ›êÍópÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™ï‘Ç≥ÇÍÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB
  • ï ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈÇΔÇ´Ç…ï‘Ç≥ÇÍÇÈê≥ämÇ»ÉGÉâÅ[ÉRÅ[ÉhÇÕÅAǪÇÃÉvÉçÉZÉXÇ™ÉçÅ[ÉJÉãÉ}ÉVÉìÇ≈é¿çsÇ≥ÇÍǃǢÇÈǩǫǧǩDžÇÊǡǃàŸÇ»ÇËÇ‹Ç∑ÅB

ç≈å„Ç…ÇÌÇ©ÇÈDZÇΔ

ìØÇ∂ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ 2 ìxÉIÅ[ÉvÉìÇ∑ÇÈÇΔÇ´Ç…î≠ê∂Ç∑ÇÈç≈å„ÇÃñ‚ëËÇÕ Resource Manager ÇÃê›åvǪÇÃLJÇÃÇ…ì‡ç›ÇµÇƒÇ®ÇËÅAǪÇÍÇâÒîÇ∑ÇÈDZÇΔÇÕîÒèÌÇ…ç¢ìÔÇ≈Ç∑ÅBÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìÇ∑ÇÈÇΔÇ´ÅAResource Manager ÇÕÇ∑Ç◊ǃÇÃÉäÉ\Å[ÉXÇÃÉJÉ^ÉçÉO (ÉäÉ\Å[ÉXÉ}ÉbÉv) ÇÉqÅ[ÉvÇ…ÉçÅ[ÉhǵÅAǪÇÃÉ}ÉbÉvÇégǡǃÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãì‡Ç…èÌíìÇ∑ÇÈǪÇÍǺÇÍÇÃÉäÉ\Å[ÉXÇÃÉfÅ[É^ÇåüçıǵNjÇ∑ÅB

ÉäÉ\Å[ÉXÉ}ÉbÉvÇïœçXǵǃLJÅAResource Manager ÇÕÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìǵÇΩï°êîÇÃÉvÉçÉZÉXä‘ÇÃí≤êÆÇçsǢNjÇπÇÒÅBResource Manager ÇÕÅAìØÇ∂ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ…ëŒÇµÇƒ 2 ǬÇÃì«Ç›èëÇ´â¬î\Ç»ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇÉIÅ[ÉvÉìÇ≈ǴǻǢÇÊǧDžǵNjÇ∑Ç™ÅAì«Ç›çûÇ›êÍópÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇΔì«Ç›èëÇ´â¬î\Ç»ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇìØéûÇ…éÊìæÇ∑ÇÈëÄçÏÇí‚é~Ç∑ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB

ǪÇÃåãâ ÅAéüÇÃÇÊǧǻèÛãµÇ≈èdëÂÇ»ñ‚ëËÇ™î≠ê∂Ç∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

    1. ÉvÉçÉZÉX A Ç™ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇì«Ç›èëÇ´â¬î\Ç≈ÉIÅ[ÉvÉìǵNjÇ∑ÅBResource Manager ÇÕǪÇÃÉtÉ@ÉCÉãÇ…ëŒâûÇ∑ÇÈÉäÉ\Å[ÉXÉ}ÉbÉvÇÉvÉçÉZÉX A ÇÃÉqÅ[ÉvÇ…ì«Ç›çûǛNjÇ∑ÅB
    2. ÉvÉçÉZÉX B ǙǪÇÃÉäÉ\Å[ÉXÇì«Ç›çûÇ›êÍópÇ≈ÉIÅ[ÉvÉìǵNjÇ∑ÅBResource Manager ÇÕǪÇÃÉtÉ@ÉCÉãÇ…ëŒâûÇ∑ÇÈÉäÉ\Å[ÉXÉ}ÉbÉvÇÉvÉçÉZÉX B ÇÃÉqÅ[ÉvÇ…ì«Ç›çûǛNjÇ∑ÅB
    3. DZÇÃå„ÅAÉvÉçÉZÉX A ÇÕÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇïœçXǵÅAUpdateResFile ÇåƒÇ—èoǵǃÅAǪÇÍÇÁÇÃïœçXì‡óeÇÉfÉBÉXÉNÇ…èëÇ´ñflǵNjÇ∑ÅBDZÇÃèàóùÇ…ÇÊÇËÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãì‡ÇÃÇ≥NjǥNjǻÉäÉ\Å[ÉXÇÃà íuÇÕìÆìIÇ…ïœçXÇ≥ÇÍÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB
    4. DZÇÃå„ÅAÉvÉçÉZÉX B ÇÕ Resource Manager ÇåƒÇ—èoǵǃÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ©ÇÁÉäÉ\Å[ÉXÇì«Ç›çûǛNjÇ∑ÅBÉvÉçÉZÉX B Ç™éùǡǃǢÇÈÉäÉ\Å[ÉXÉ}ÉbÉvÇÃÉRÉsÅ[ÇÕLJÇÕÇ‚é¿ç€ÇÃÉtÉ@ÉCÉãÇΔÇÕàÍívǵǻǢÇΩÇflÅAResource Manager ÇÕãUÇÃÉäÉ\Å[ÉXÉfÅ[É^Çï‘Ç∑DZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

    DZÇÃÇÊǧǻêßå¿ÇÕÅAÅwInside Macintosh: More Macintosh ToolboxÅxDždžÇÈÅuFSpOpenResFileÅvÇÃê‡ñæÇÃÅuSpecial ConsiderationsÅvÇÃêflÇ≈ämǩDžê‡ñæÇ≥ÇÍǃǢNjÇ∑Ç™ÅAǪÇÃê‡ñæÇÕÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ 2 ìxÉIÅ[ÉvÉìÇ∑ÇÈÇΔÇ´ÇÃñ‚ëËÇΔìØólÇ…ÅAê≥ǵÇ≠ǻǢì‡óeÇ™åJÇËï‘Ç≥ÇÍǃǢNjÇ∑ÅB

    âåàï˚ñ@ÇÃÉåÉVÉs

    DZDZÇ≈ÇÕÅAFSpOpenResFile ÇÃäÔñ≠Ç»ìÆçÏÇ™É\ÉtÉgÉEÉFÉAÇë‰ñ≥ǵDžǵǃǵNjǧÇÃÇñhÇÆÇΩÇflÇ…ñóßǬÉeÉNÉjÉbÉNÇÇ¢Ç≠Ǭǩè–âÓǵNjÇ∑ÅBDZÇÍÇÁÇÃÉeÉNÉjÉbÉNÇÕÅAç≈LJêÑèßÇ≈Ç´ÇÈLJÇÃÇ©ÇÁèáÇ…é¶ÇµÇ‹Ç∑ (ǵǩLJé¿ëïǵǂÇ∑Ç¢èáÇ…)ÅB

    ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇàÍìxÇæÇØÉIÅ[ÉvÉìÇ∑ÇÈ

    í èÌÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉåÉxÉãÇÃÉRÅ[ÉhÇèëǢǃǢÇÈèÍçáÇÕÅAÉvÉçÉZÉXÇ™ä˘Ç…ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìǵǃǢÇÈDZÇΔÇãLâØÇµÇƒÇ®Ç´ÅAǪÇÍÇ 2 ìxÉIÅ[ÉvÉìÇ∑ÇÈÇÃÇñhÇÆÇÃÇ™ç≈LJä»íPÇ»ï˚ñ@Ç≈Ç∑ÅBéüÇÃÉRÅ[ÉhÇÕÅADZÇÃÇÊǧǻèàóùÇçsǧíPèÉÇ»ÉTÉìÉvÉãÇé¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

     static SInt16 gResourceResFile = 0;
     static UInt32 gResourceUsageCount = 0;
    
     static OSErr StartUsingResources(ConstFSSpecPtr fss)
     {
         OSErr  err;
         SInt16 tmpResFile;
    
         err = noErr;
         if (gResourceUsageCount == 0) {
             tmpResFile = FSpOpenResFile(fss, fsRdWrPerm);
             err = ResError();
             if (err == noErr) {
                 gResourceResFile = tmpResFile;
             }
         }
         if (err == noErr) {
             gResourceUsageCount += 1;
         }
    
         return err;
     }
    
     static void StopUsingResources(void)
     {
         gResourceUsageCount -= 1;
         if (gResourceUsageCount == 0) {
             CloseResFile(gResourceResFile);
             gResourceResFile = 0;
         }
     }
    

    DZÇÃÉeÉNÉjÉbÉNÇï°êîÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ…ägí£Ç∑ÇÈï˚ñ@ÇÕÅAÉfÉxÉçÉbÉpé©êgÇÃó˚èKÇΔǵǃǮǴNjÇ∑ÅB

    ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇì«Ç›çûÇ›êÍópÇ≈ÉIÅ[ÉvÉìÇ∑ÇÈ

    ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™åªç›ÇÃÉvÉçÉZÉX (ÇΩÇΔǶnjÅAÉVÉXÉeÉÄã@î\ägí£ÇÃÉRÅ[ÉhÇ≈) Ç…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩÇÕǡǴÇËÇÌÇ©ÇÁǻǢèÛãµÇ≈ÇÕÅAç≈LJä»íPÇ»âåàï˚ñ@ÇÕèÌÇ…ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇì«Ç›çûÇ›êÍópÇ≈ (ǬNjÇËÅAfsRdPerm Çégǡǃ) ÉIÅ[ÉvÉìÇ∑ÇÈDZÇΔÇ≈Ç∑ÅBDZÇÃï˚ñ@ÇégópÇ∑ÇÈÇΔÅAà¿ëSÇ…ÉNÉçÅ[ÉYÇ∑ÇÈDZÇΔÇÃÇ≈Ç´ÇÈêVǵǢÉäÉ\Å[ÉXÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™èÌÇ…ï‘Ç≥ÇÍÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB

    DZÇÃâåàï˚ñ@ÇÇ≥ÇÁÇ…êÙó˚Ç≥ÇÍÇΩLJÇÃÇ…Ç∑ÇÈÇ…ÇÕÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇÃÉIÅ[ÉvÉìÅAì«Ç›çûÇ›ÅAÇ®ÇÊÇ—ÉNÉçÅ[ÉYÇÇ∑njǂÇ≠çsÇ¢ÅAǪÇÃä‘Ç…ëºÇÃÉvÉçÉZÉXÇ…éûä‘Ç™à¯Ç´ìnÇ≥ÇÍǻǢÇÊǧDžǵNjÇ∑ÅBDZǧÇ∑ÇÍÇŒÅAÉtÉ@ÉCÉãÇì«Ç›çûÇÒÇ≈Ç¢ÇÈä‘Ç…ï ÇÃÉvÉçÉZÉXǙǪÇÃÉtÉ@ÉCÉãÇïœçXÇ∑ÇÈDZÇΔLJǻÇ≠Ç»ÇËÅAëOèqǵÇΩÇÊǧǻñ ì|Ç»ñ‚ëËÇ…ÇÊÇÈè·äQÇç≈è¨å¿Ç…ó}ǶÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃï˚ñ@ÇÕàÍíËÇÃèÛãµÇæÇØÇ≈ñóßÇøÇ‹Ç∑Ç™ÅAÉåÉVÉsÇà 1 ǬÇΔǵǃäoǶǃǮÇ≠ÇΔämǩDžï÷óòÇ≈Ç∑ÅB

    TopMapHndl ÇÉ`ÉFÉbÉNÇ∑ÇÈ

    ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ™åªç›ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩǙÇÕǡǴÇËÇÌÇ©ÇÁǻǢèÛãµÇ≈ÅAÉäÉ\Å[ÉXÇì«Ç›èëÇ´â¬î\Ç≈ÉIÅ[ÉvÉìÇ∑ÇÈïKóvǙdžÇÈèÍçáÅATopMapHndl â∫à ÉÅÉÇÉäÉOÉçÅ[ÉoÉãÇÉÇÉjÉ^ǵǃÅAFSpOpenResFile ÇåƒÇ—èoǵÇΩå„Ç≈ïœçXÇ™â¡Ç¶ÇÁÇÍǃǢǻǢǩǫǧǩÇämîFÇ∑ÇÈDZÇΔÇ™ç≈ëPÇÃÉeÉNÉjÉbÉNÇ≈Ç∑ÅBDZÇÃÉOÉçÅ[ÉoÉãÇ…ïœçXÇ™â¡Ç¶ÇÁÇÍǃǢÇÈèÍçáÇÕÅAêVǵǢÉäÉ\Å[ÉXÉ}ÉbÉvÇ™ÉäÉ\Å[ÉXÉ`ÉFÅ[ÉìÇÃÇ¢ÇøÇŒÇÒè„Ç…í«â¡Ç≥ÇÍǃǮÇËÅAǪÇÍÇÇ´ÇøÇÒÇΔÉNÉçÅ[ÉYÇ∑ÇÈê”îCǙdžÇËÇ‹Ç∑ÅBDZÇÃÉOÉçÅ[ÉoÉãÇ…ïœçXÇ™â¡Ç¶ÇÁÇÍǃǢǻǢèÍçáÅAä˘ë∂ÇÃÉäÉ\Å[ÉXÉ}ÉbÉvÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™ï‘Ç≥ÇÍǃǮÇËÅAǪÇÍÇÉNÉçÅ[ÉYÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅB

    éüÇÃÉRÅ[ÉhÇÕDZÇÃÉeÉNÉjÉbÉNÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

     static void SafeOpenResFileReadWrite(ConstFSSpecPtr fss)
     {
         OSErr   err;
         SInt16  oldResFile;
         Handle  oldTopMap;
         SInt16  resFile;
         Boolean shouldClose;
    
         oldResFile = CurResFile();
    
         oldTopMap = LMGetTopMapHndl();
         resFile = FSpOpenResFile(fss, fsRdWrPerm);
         err = ResError();
    
         if (err == noErr) {
             shouldClose = (LMGetTopMapHndl() != oldTopMap);
    
             // do the stuff with the resource file
    
             if (shouldClose) {
                 CloseResFile(resFile);
             }
         }
    
         UseResFile(oldResFile);
     }
    

    ǻǮÅADZÇÃÉeÉNÉjÉbÉNÇÕÅAÉtÉ@ÉCÉãÇì«Ç›èëÇ´â¬î\Ç≈ÉIÅ[ÉvÉìÇ∑ÇÈïKóvǙdžÇËÅAǪÇÃÉtÉ@ÉCÉãÇ™åªç›ÇÃÉvÉçÉZÉXÇ…ÇÊǡǃä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩÇÕǡǴÇËÇÌÇ©ÇÁǻǢèÍçáÇÃÇ›óLå¯Ç≈džÇÈì_Ç…íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÃÇÊǧǻèÍçáÅADZÇÃÉeÉNÉjÉbÉNÇÕîÒÉAÉvÉäÉPÅ[ÉVÉáÉìÉRÅ[Éh (ÉVÉXÉeÉÄã@î\ägí£ÅAã§óLÉâÉCÉuÉâÉäÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉvÉâÉOÉCÉìǻǫ) Ç…ÇÊǡǃïKóvÇΔÇ≥ÇÍÇ‹Ç∑Ç™ÅAïWèÄÉtÉ@ÉCÉãÉtÉBÉãÉ^ä÷êîǻǫÇÃñ¢ímÇÃä¬ã´Ç≈é¿çsÇ≥ÇÍǃǢÇÈÉAÉvÉäÉPÅ[ÉVÉáÉìÉRÅ[ÉhÇ≈LJñóßǬDZÇΔǙdžÇËÇ‹Ç∑ÅB

    èÌÇ… CurResFile Çï€éùÇ∑ÇÈ

    ëOèqÇÃÇ«ÇÃÉeÉNÉjÉbÉNÇégópÇ∑ÇÈǩDžä÷åWÇ»Ç≠ÅAFSpOpenResFile ÇÃåƒÇ—èoǵÇΔÅACurResFile Ç®ÇÊÇ— UseResFile ÇÃåƒÇ—èoǵÇÇ–ÇΔÇ‹ÇΔÇflÇ…àµÇ¢ÅAÉRÅ[ÉhÇ™åÎǡǃåªç›ÇÃÉäÉ\Å[ÉXÉ}ÉbÉvÇïœçXǵǃǵNjÇÌǻǢÇÊǧDžÇ∑ÇÈÇÃLJÇÊÇ¢çlǶÇ≈Ç∑ÅBëOèqÇÃÉRÅ[ÉhÇ≈ÇÕÅADZÇÃÉeÉNÉjÉbÉNLJãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

    ÉpÅ[É~ÉbÉVÉáÉìÇÉ`ÉFÉbÉNÇ∑ÇÈ ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ…èëÇ´çûÇ›ÇçsǧïKóvǙdžÇËÅAÉtÉ@ÉCÉãÇ™ä˘Ç…ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈǩǫǧǩÇÕǡǴÇËǵǻǢèÍçáÇÕÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇí≤Ç◊ǃÅAǪÇÍÇ™ì«Ç›èëÇ´ÉAÉNÉZÉXÇÉTÉ|Å[ÉgǵǃǢÇÈǩǫǧǩÇämîFǵNjÇ∑ÅBì«Ç›èëÇ´â¬î\Ç»ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜǙdžǡǃLJÉtÉ@ÉCÉãÇ÷ÇÃèëÇ´çûǛǙê≥èÌÇ…é¿çsÇ≈Ç´ÇÈǩǫǧǩÇÕï€èÿÇ≥ÇÍǃǢNjÇπÇÒÇ™ÅAè≠Ç»Ç≠ÇΔLJç≈èâÇÃÉXÉeÉbÉvÇ≈DZÇÃDZÇΔÇÉ`ÉFÉbÉNÇ∑ÇÈÇÃÇÕÇÊÇ¢çlǶÇ≈Ç∑ÅB

    File Manager ÇÃÉãÅ[É`ÉìÇ≈džÇÈ PBGetFCBInfoSync ÇåƒÇ—èoǵÅAioFCBFlags ÇÃÉrÉbÉg 8 ÇÃílÇéÊìæÇ∑ÇÈDZÇΔÇ≈ÅAÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ™ì«Ç›èëÇ´â¬î\Ç≈džÇÈǩǫǧǩÇÉ`ÉFÉbÉNÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBéüÇÃÉRÅ[ÉhÇÕDZÇÃÉeÉNÉjÉbÉNÇãÔëÃìIÇ…é¶ÇµÇƒÇ¢Ç‹Ç∑ÅB

     static Boolean IsResourceFileRefNumWritable(SInt16 rsrcRefNum)
     {
         Boolean result;
         FCBPBRec fcbPB;
    
         fcbPB.ioNamePtr = nil;
         fcbPB.ioVRefNum = 0;
         fcbPB.ioRefNum = rsrcRefNum;
         fcbPB.ioFCBIndx = 0;
         if ( PBGetFCBInfoSync(&fcbPB) == noErr ) {
             result = ((fcbPB.ioFCBFlags & (1 << 8)) != 0);
         } else {
             result = false;
         }
    
         return result;
     }
    
    óvñÒ

    ìØÇ∂ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ 2 ìxÉIÅ[ÉvÉìÇ∑ÇÈèÍçáÅAResource Manager Ç…ÇÊÇËÅAéüÇÃÇÊǧǻäÔñ≠Ç»ìÆçÏÇ™î≠ê∂ǵNjÇ∑ÅB

    • FSpOpenResFile Ç™êVǵǢÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇÉIÅ[ÉvÉìÇ∑ÇÈë„ÇÌÇËÇ…ÅAä˘ë∂ÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇï‘Ç∑ÅB
    • ì«Ç›èëÇ´ÉAÉNÉZÉXÇñæé¶ìIÇ…óvãÅǵÇΩèÍçáÇ≈LJÅAFSpOpenResFile Ç™ì«Ç›çûÇ›êÍópÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇï‘Ç∑ÅB
    • ì«Ç›çûÇ›êÍópÇÃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ…ÇÊǡǃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇì«Ç›çûÇfièÍçáÇ≈LJÅAìØéûÇ…ï ÇÃì«Ç›èëÇ´â¬î\Ç»ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÉäÉtÉ@ÉåÉìÉXî‘çÜÇ…ÇÊǡǃÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ…ïœçXÇ™â¡Ç¶ÇÁÇÍǃǢÇÈÇΔÅAÉäÉ\Å[ÉXÉfÅ[É^Ç™âÛÇÍǃǵNjǧâ¬î\ê´Ç™Ç†ÇÈÅB
    DZÇÍÇÁÇÃñ‚ëËÇâÒîÇ∑ÇÈç≈ëPÇÃï˚ñ@ÇÕÇΔÇ…Ç©Ç≠ÉäÉ\Å[ÉXÉtÉ@ÉCÉãÇ 2 ìxÉIÅ[ÉvÉìǵǻǢDZÇΔÇ≈Ç∑ÅBDZÇÍÇîÇØÇÈDZÇΔÇ™Ç≈ǴǻǢèÍçáÅADZÇà TECHNOTE Ç…ãLèqÇ≥ÇÍǃǢÇÈÅAè·äQÇç≈è¨å¿Ç…ó}ǶÇÈÇΩÇflÇ…óòópÇ≈Ç´ÇÈÉAÉvÉçÅ[É`ÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB

    éQçlï∂å£